package com.example.riceexambackend.service;

import com.example.riceexambackend.controller.param.exam.ExamAddParam;
import com.example.riceexambackend.controller.param.exam.ExamAttendParam;
import com.example.riceexambackend.controller.param.exam.ExamAutoParam;
import com.example.riceexambackend.controller.param.exam.ExamSubmitParam;
import com.example.riceexambackend.controller.param.questiontype.QuestionTypeAddParam;
import com.example.riceexambackend.controller.param.questiontype.QuestionTypeDeleteParam;
import com.example.riceexambackend.controller.param.questiontype.QuestionTypeUpdateParam;
import com.example.riceexambackend.service.dto.exam.*;
import com.example.riceexambackend.service.dto.questiontype.QuestionTypeAddDTO;
import com.example.riceexambackend.service.dto.questiontype.QuestionTypeDeleteDTO;
import com.example.riceexambackend.service.dto.questiontype.QuestionTypeSelectDTO;
import com.example.riceexambackend.service.dto.questiontype.QuestionTypeUpdateDTO;

import java.util.List;

/**
 * 试卷层
 */
public interface ExamService {
    /**
     * 新增试卷
     * @param param 新增试卷参数
     * @return DTO对象
     */
    ExamAddDTO insertExam(ExamAddParam param);

    /**
     * 查询全部试卷
     * @return 试卷列表
     */
    List<ExamSelectDTO> selectAllExam();

    /**
     * 自动组卷
     * @return
     */
    ExamAutoDTO autoGenerateExamQuestion(ExamAutoParam examAutoParam);

    /**
     * 根据试卷id查看试卷
     * @param examId 试卷id
     * @return
     */
    List<ExamViewDTO> viewExam(String examId);

    /**
     * 参加考试
     * @param examAttendParam 参加考试参数
     * @return 参加考试响应
     */
    List<ExamAttendDTO> attendExam(ExamAttendParam examAttendParam);

    /**
     * 提交试卷
     * @param examSubmitParam 提交试卷参数
     * @return
     */
    ExamSubmitDTO submitExam(ExamSubmitParam examSubmitParam);

//    /**
//     * 修改题型
//     * @param param 修改题型参数
//     * @return DTO对象
//     */
//    QuestionTypeUpdateDTO updateQuestionType(QuestionTypeUpdateParam param);
//
//
//    /**
//     * 删除题型
//     * @param param 删除题型参数
//     * @return DTO对象
//     */
//    QuestionTypeDeleteDTO deleteQuestionType(QuestionTypeDeleteParam param);
}
